#ifndef MPSTRINGUTILS_H
#define MPSTRINGUTILS_H

/******************************
 *
 * 名   称：   字符串操作公共类
 * 用   途：   字符串大小写转换、Trim、StartsWith、EndWith、RemovePrefix、Split、Join
 * 作用范围：   公共的
 * 创建时间：   2022-10-03
 * 备   注：
 * 参   考：   主要通过BOOST库实现
 *
 ******************************/

#include "mpConfig.h"
#include <string>
#include "string.h"
#include <vector>

namespace MP{
namespace StringUtils{

void stringToUpper(std::string* s);
void stringToLower(std::string* s);

std::string stringToUpper_copy(const std::string& s);
std::string stringToLower_copy(const std::string& s);

std::string trim_copy(const std::string& s);
std::string trim_copy(const std::string& s, const std::string& trim_value);

std::string joinStrings(const std::vector<std::string>& str_vec,
                        const std::string& delimiter);

bool stringStartsWith(const std::string& str,
                      const std::string& prefix);
bool stringEndsWith(const std::string& str,
                    const std::string& suffix);

bool stringStartsWithIgnoreCase(const std::string& str,
                                const std::string& prefix);
bool stringEndsWithIgnoreCase(const std::string& str,
                              const std::string& suffix);

std::string stringRemovePrefix_copy(const std::string& str,
                                    const std::string& prefix);
std::string stringRemoveSuffix_copy(const std::string& str,
                                    const std::string& suffix);


void splitString(const std::string& str,
                 char delim,
                 std::vector<std::string> & vec);
void splitString(const std::string& str,
                 const std::string& sep,
                 std::vector<std::string> & vec);

bool checkIsIP(const std::string& host);

}   //END StringUtils
}   //END MP

#endif // MPSTRINGUTILS_H
